package consultaADistancia;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import util.Cons;

import com.movil.registrodelapropiedadgt.R;

import com.movil.registrodelapropiedadgt.R.layout;
import com.movil.registrodelapropiedadgt.R.menu;

import accesoADatos.TRN_vitacora;
import android.R.bool;
import android.media.RemoteController.OnClientUpdateListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Vitacora extends Activity  implements OnClickListener{
	//variables para comunicacion con WS
	private static final String SOAP_ACTION = Cons._WS_SOAP_ACTION_ConsultaVitacoraDeDocumento;
	private static final String METHOD_NAME = Cons._WS_OPN_ConsultaVitacoraDeDocumento;
	private static final String NAMESPACE 	= Cons._WS_NAMESPACE_Movil;
	private static final String URL 		= Cons._WSDL_URL_Movil;
	
	final HttpTransportSE transporte = new HttpTransportSE(URL);
	public Boolean ter=false;
	conasync objcon =new conasync();
	TRN_vitacora traductor=new TRN_vitacora();
	boolean Existe=true;
	boolean errorWS=false;
	//interfaz grafica
	Button BT_VerVitacora;
	EditText ET_NoDocument;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_vitacora);
		
		//vitacora
  		BT_VerVitacora=(Button) findViewById(R.id.LBT_MostrarVitacora);
  		BT_VerVitacora.setOnClickListener(this);
  		
  		ET_NoDocument=(EditText)findViewById(R.id.LET_NoDocumento);
  		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.vitacora, menu);
		return true;
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) 
		{
		
			case R.id.LBT_MostrarVitacora:
				//abrir intent de vitacora
				String STR_noRecibo = ET_NoDocument.getText().toString();
				
				if(
						ET_NoDocument.getText().toString().equals("")
						||
						ET_NoDocument.getText().toString()==null
					)
				{
					Toast.makeText(
							getBaseContext(),
							"Debe de ingresar el numero del Documento",
							Toast.LENGTH_LONG
							).show();
					 
				}
				else
				{
					objcon =new conasync();
					//objcon.cancel(true);
					objcon.execute("");
					Show_Documento.NoDocumento=STR_noRecibo;
					int timeOut=Cons._TTL_Movil;
					while (Show_Documento.Respuesta.equals("")&&timeOut!=0) {
						espera();
						timeOut = timeOut-1;
					}
					if(!errorWS){
						if(Existe){
							if(timeOut!=0){
		
								Intent it_MV = new Intent(this, Show_Documento.class );
								startActivity(it_MV);	
							}else{
								pd.dismiss();
								pd.hide();
								Toast.makeText(
										getBaseContext(),
										"la comunicacion no se consiguio por favor pruebe nuevamente, o su numero de documento es incorrecto",
										Toast.LENGTH_LONG*Cons._tiempo_MSJ_Espera
										).show();
							}
						}else{
							pd.dismiss();
							pd.hide();
							Toast.makeText(
									getBaseContext(),
									"Su numero de documento es incorrecto",
									Toast.LENGTH_LONG*Cons._tiempo_MSJ_Espera
									).show();
						}
					}else{
						pd.dismiss();
						pd.hide();
						Toast.makeText(
								getBaseContext(),
								"la conecion al lservidor no tubo exito",
								Toast.LENGTH_LONG*Cons._tiempo_MSJ_Espera
								).show();
					}
					
				}
				Existe=true;
				errorWS=false;
			break;
			
			
		}
		
	}
///////////////////////////////////////////////////////////////////////
private ProgressDialog pd = null;

public class conasync extends AsyncTask<String, String, String>  {
	public Boolean termino=false;
	public String IDDocumento="";
	public Boolean getTermino(){
		return termino; 
	}
	@Override
	protected void onPreExecute() {
		pd = new ProgressDialog(Vitacora.this);
		pd.setTitle("Espere");
		pd.setMessage("Procesando, por favor espere....");
		pd.setCancelable(false);
		pd.setIndeterminate(true);
		pd.show();
		//pd.hide();
	}
	
	public SoapPrimitive resultString = null;

	protected void onPostExecute() {
		if (pd != null) {
			ter=true;
			pd.dismiss();
			pd.hide();
			
		}
	}

	@Override
	protected String doInBackground(String... arg0) {
	// TODO Auto-generated method stub

	try {
		String STR_NoDocumento=ET_NoDocument.getText().toString().toUpperCase();
		//remober para hacer dinamico
		//STR_NoDocumento="13R110502235";
		//TV_WebServicews1.setText("Esperando respuesta");
		
		SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
		HttpTransportSE transporte = new HttpTransportSE(URL);
		Request.addProperty("docID",STR_NoDocumento);
		
		SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
		SoapEnvelope.VER11);
		//soapEnvelope.dotNet = true;
		soapEnvelope.setOutputSoapObject(Request);
		transporte.call(SOAP_ACTION, soapEnvelope);
		resultString = (SoapPrimitive) soapEnvelope.getResponse();
		System.out.println(resultString.toString());
		////////////////////////////
		String respuesta_WS=resultString.toString();
		if(!respuesta_WS.equals("-1")&&!respuesta_WS.equals("-2")){
		
			Show_Documento.Respuesta=respuesta_WS;
			Show_Documento.listaEstados=traductor.getVitacora(traductor.StringToJson(respuesta_WS)).getVitacora();
			Show_Documento.NoDocumento=ET_NoDocument.getText().toString();
			
		}else{
			//asignacion de estado de error
			if(respuesta_WS.equals("-1")){
				Existe=false;
			}
			if(respuesta_WS.equals("-2")){
				errorWS=true;
			}
		}
		
		/////////////////////////////////////////////////////////////////
		pd.dismiss();
		pd.hide();
		ter=true;
		//ET_NoFinca.setText("mensaje recibido");

	} catch (Exception e) {
		System.out.println("error en la conexion " + e.getMessage());

	}
	return null;
	}

	public void funcionCallback(String json) {
	
	}
	protected void onPostExecute(Long result) {
        ter=true;
		
    }
	}
///////////////////////////////////////////////////////////////////////

	  public void espera(){
	     
	     try{
	        Thread.sleep(1000);
	     }catch(InterruptedException e){}
	     
	   }
	
///////////////////////////////////////////////////////////////////////
	
}
